package com.gitee.free.coding.core.utils;

import com.gitee.free.coding.core.enums.DateFormatEnum;
import lombok.Getter;
import lombok.Setter;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 日期工具类
 */
public class DateUtils {

    /**
     * 获取当前日期
     *
     * @return 当前日期
     */
    public static Integer getCurrentDate() {
        return Integer.valueOf(getDateTime(DateFormatEnum.DATE_1));
    }

    /**
     * 获取当前时间
     *
     * @return 当前时间
     */
    public static Integer getCurrentTime() {
        return Integer.valueOf(getDateTime(DateFormatEnum.TIME_1));
    }

    /**
     * 获取当前日期时间对象
     *
     * @return 当前日期时间对象
     */
    public static CurrentDateTime getCurrentDateTime() {
        String currentDateTimeString = getDateTime(DateFormatEnum.DATE_TIME_1);
        CurrentDateTime currentDateTime = new CurrentDateTime();
        currentDateTime.setCurrentDate(Integer.valueOf(currentDateTimeString.substring(0, 8)));
        currentDateTime.setCurrentTime(Integer.valueOf(currentDateTimeString.substring(8, 14)));
        return currentDateTime;
    }

    /**
     * 获取当前日期时间字符串
     *
     * @param dateFormatEnum 日期格式枚举
     * @return 当前日期时间字符串
     */
    public static String getDateTime(DateFormatEnum dateFormatEnum) {
        return getDateTime(dateFormatEnum.getFormat());
    }

    /**
     * 获取当前日期时间字符串
     *
     * @param pattern 日期格式
     * @return 当前日期时间字符串
     */
    public static String getDateTime(String pattern) {
        LocalDateTime localDateTime = LocalDateTime.now();
        DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern);
        return localDateTime.format(dateTimeFormatter);
    }

    @Setter
    @Getter
    public static class CurrentDateTime {

        /**
         * 当前日期
         */
        private Integer currentDate;

        /**
         * 当前时间
         */
        private Integer currentTime;
    }

}
